import jweixin from '@/components/jweixin-module/index1.6.js'

const install = (Vue, vm) => {
	
	Vue.prototype.$u.http.setConfig({
		baseUrl: 'https://m.baidu.com', // 请求的本域名
		// 设置为json，返回后会对数据进行一次JSON.parse()
		dataType: 'json',
		// 配置请求头信息
		header: {
			'content-type': 'application/json;charset=UTF-8'
		},
		showLoading: true, // 是否显示请求中的loading
		loadingText: '努力加载中~', // 请求loading中的文字提示
		loadingTime: 800, // 在此时间内，请求还没回来的话，就显示加载中动画，单位ms
		originalData: false, // 是否在拦截器中返回服务端的原始数据
		loadingMask: true, // 展示loading的时候，是否给一个透明的蒙层，防止触摸穿透
	});
	
	// 请求拦截
	Vue.prototype.$u.http.interceptor.request = config => {
		/* setToken */
		let token = vm.$store.state.token,
			expiresIn = Number(sessionStorage.getItem('expiresIn'))
			
		if(token && expiresIn){
			if((new Date().getTime()) > expiresIn){
				sessionStorage.removeItem('token')
				sessionStorage.removeItem('expiresIn')
				uni.showModal({
					showCancel:false,icon:'none',
					content:"登录已过期，请重新进入",
					success({confirm}) {jweixin.closeWindow()}
				})
			}else {
				config.header['token'] = token
			}
		}else {
			/* 若没有token，并请求的接口不是登录接口 */
			if(!config.url.includes('login/qylogin')) {
				uni.showModal({
					showCancel:false,icon:'none',
					content:"登录已过期，请重新进入",
					success({confirm}) {jweixin.closeWindow()}
				})
				return false
			}
		}
		return config
	}
	
	/* 响应拦截 */
	Vue.prototype.$u.http.interceptor.response = res => {
		if(res.code == 200) {
			let httpData = res.response.data;
			
			if(httpData.code === 0){
				// 存储token和过期时间
				if(res.url.includes('login/qylogin')){
					sessionStorage.setItem('token', httpData.access_token)
					sessionStorage.setItem('expiresIn', new Date().getTime()+7200000)
				}
				return res.result;
			} else {
				uni.showToast({
					title: httpData.info ?? httpData.msg,
					image:'/static/image/question.png',
					duration: 3000
				});
				return false
			}
		} else {
			return false
		}
	}
}

export default { install }